\documentstyle[german,a4]{article}
\germanTeX
\textwidth 160.2 true mm
\oddsidemargin 3 true mm
\def\AT{{\bf Amiga\TeX}}
\def\DM{{\bf DME}}
\def\PR{{\bf Preview}}
\def\TD{{\bf\TeX DME}}
\begin{document}
\begin{center}
\huge \TD\ Version 2.00\\
\Large Ein ARexx Programmpaket für \DM\ und \AT\\
\Large \copyright\ 1989 Stefan Becker
\end{center}

\section{Einleitung}
Dieses Paket dient dazu \AT\ aus dem PD-Editor \DM\ heraus zu steuern. Die
Datei wird im Editor bearbeitet, dann per Knopfdruck an \AT\ übergeben und kann
schliesslich mit \PR\ betrachtet werden. Natürlich kann auch der Druckertreiber
vom Editor aus aufgerufen werden.

\section{Installation} Das Paket enthält folgende Dateien:

\begin{tabular}{ll}
\bf readme        & Generelle Informationen zu diesem Paket\\
\bf rexx/*.dme    & ARexx Programme\\
\bf s/.EDRC       & Beispieldatei für die Tastaturbelegung\\
\bf s/TeX.startup & Startscript für \TeX\\
\bf TeXDME.tex    & Dokumentation im \LaTeX-Format
\end{tabular}

\noindent Die Dateien aus den Unterverzeichnissen {\em rexx\/} bzw.\ {\em s\/}
werden nach {\em REXX:\/} bzw.\ {\em S:\/} kopiert. Falls Sie die
Tastaturbelegung übernehmen möchten, dann fügen sie die Datei {\em s/.EDRC\/}
an die Datei {\em S:.EDRC\/} an.

\noindent Das Paket benötigt weiterhin die folgenden Programme bzw. Dateien:

\begin{tabular}{ll}
\bf arp.library        & Filerequester etc.\\
\bf AShell             & ARP Shell (kann durch {\em NewShell\/} ersetzt werden)\\
\bf rexxarplib.library & ARexx Schnittstelle zur arp.library\\
\bf RunBack            & Startet Programme im Hintergrund
\end{tabular}

\section{Beschreibung der ARexx Programme}
Es folgt nun eine Beschreibung der Programme und ihrer Funktionsweise. Es wird
gezeigt, wie man sie vom \DM\ aus aufruft und welche Parameter sie benötigen.

\subsection{StartTeX}
Mit diesem Programm wird \AT\ gestartet. Es prüft dabei zuerst, ob \AT\ schon
läuft. Kann \AT\ nicht gestartet werden, so gibt das Programm den Wert 10
zurück.

\medskip
Aufruf: \verb|rx StartTeX|

\subsection{StartPreview}
Mit diesem Programm wird \PR\ gestartet. Es prüft dabei zuerst, ob \PR\ schon
läuft. Kann \PR\ nicht gestartet werden, so gibt das Programm den Wert 10
zurück.

\medskip
Aufruf: \verb|rx StartPreview|

\subsection{RemoveTeX}
Dieses Programm entfernt \AT, \PR\ und alle von \TD\ benötigten
Umgebungsvariablen.

\begin{tabbing}
\indent Aufruf: \=\verb|rx RemoveTeX|\\
        \>\verb|rx1 RemoveTeX dummy|
\end{tabbing}

\noindent Bei der zweiten Aufrufvariante werden noch zusätzlich alle temporären
Dateien gelöscht, die \TD\ angelegt hat. Diese tragen den Namen
{\em RAM:TeXDME*.}

\subsection{SetTeXFormat1}
Da \TeX\ mit verschiedenen Makropaketen arbeiten kann, haben Sie mit diesem
Programm die Möglichkeit, das richtige Paket mit auszuwählen. Dazu erscheint
ein Requester, in den sie den Namen eintragen können. Falls die
Umgebungsvariable {\em texformat\/} definiert ist, wird deren Inhalt angezeigt,
ansonsten erscheint {\em lplain.} Das Resultat wird in der Umgebungsvariable
abgelegt und, falls \AT\ schon lief, wird \AT\ unterbrochen und neu gestartet.

\medskip
Aufruf: \verb|rx SetTeXFormat1|

\subsection{SetTeXFormat2}
Die Funktionsweise ist gleich zu {\tt SetTexFormat1}, es erscheint allerdings
ein File-Requester, der das Unterverzeichnis {\em TeX:macros\/} anzeigt.

\medskip
Aufruf: \verb|rx SetTeXFormat2|

\subsection{DoTeX}
Dies ist das wichtigste Programm für die Arbeit mit \AT. Als erstes sichert es
die Originaldatei. Falls \AT\ noch nicht läuft, wird es mit {\tt StartTeX}
gestartet. Dann wird überprüft, ob die Datei die Endung {\em .tex} besitzt,
sonst wird das Programm abgebrochen. Die Datei wird nun in eine temporäre Datei
zwischengespeichert und deren Name an \AT\ geschickt. Danach ist das Programm
beendet und die Kontrolle geht an den Editor zurück, während \AT\ an dem Text
arbeitet.

\medskip
Aufruf: \verb|rx1 DoTeX \$fname|

\subsection{GoTeXError}
Falls \AT\ die Arbeit wegen eines Fehlers im Text unterbrochen hat, kann man
mit Hilfe dieses Programmes die fehlerhafte Stelle abfragen. Dabei wird der
Editor angewiesen, den Cursor auf diese Stelle zu setzen.

\medskip
Aufruf: \verb|rx GoTeXError|

\subsection{CopyTeXFiles}
Da \TD\ mit temporären Dateien arbeitet, müssen diese vor der Beendigung der
Arbeit mit dem Editor gesichert werden. Nach dem Aufruf erscheint ein
File-Requester, in dem man das Zielverzeichnis angeben kann. Es werden nun alle
zu der aktuellen Datei gehörenden Dateien in das Zielverzeichnis kopiert. Dabei
werden keine Dateien mit den Endungen {\em .log\/} und {\em .tex\/} kopiert.

\medskip
Aufruf: \verb|rx1 CopyTeXFiles \$fname|

\subsection{PrintTeX}
Dieses Programm druckt die zur aktuellen Datei gehörende temporäre
{\em .dvi\/}-Datei aus. Es erscheinen drei Requester, in denen man die
Startseite, die Anzahl der zu druckenden Seiten und zusätzliche Optionen des
Druckertreibers eingibt. Gibt man für die Anzahl der Seiten {\em all\/} ein, so
werden alle Seiten, von der Startseite angefangen, ausgedruckt. Die Optionen
für den Druckertreiber sind so einzugeben, wie man sie beim Aufruf vom CLI
angeben würde. Das Programm öffnet dann ein Fenster mit dem Namen
{\em TeXPrint.} Will man den Druckvorgang abbrechen, so aktiviert man das
Fenster und drückt {\em CTRL-C.}

\medskip
Aufruf: \verb|rx1 PrintTeX \$fname|

\subsection{TeXSwitch}
Die Ausgaben von \AT\ gehen in ein eigenes Fenster, das normalerweise hinter
dem Editorfenster liegt. Mit diesem Programm kann das Fenster nach vorne geholt
und auch wieder nach hinten gelegt werden. Ruft man es mit einem Parameter auf,
so wird es nach vorne ({\em front\/}) oder nach hinten ({\em back\/})
geschaltet. Ein Aufruf ohne Parameter bewirkt ein Hin- und Herschalten zwischen
den zwei Lagen.

\begin{tabbing}
\indent Aufruf: \=\verb|rx  TeXSwitch|\\
        \>\verb|rx1 TeXSwitch front|\\
        \>\verb|rx1 TeXSwitch back|
\end{tabbing}

\subsection{PreviewSwitch}
Dieses Programm wirkt genauso wie das vorherige, nur wird diesmal das Fenster
oder der Bildschirm von \PR\ kontrolliert.

\begin{tabbing}
\indent Aufruf: \=\verb|rx  PreviewSwitch|\\
        \>\verb|rx1 PreviewSwitch front|\\
        \>\verb|rx1 PreviewSwitch back|
\end{tabbing}

\section{Beispiel einer Tastaturbelegung}
Die Datei {\em s/.EDRC\/} enthält folgende Befehle:

\begin{verbatim}
   map c-f1  (rx  StartTeX)
   map c-f2  (rx  StartPreview)
   map c-f3  (rx  SetTexFormat1)
   map c-f4  (rx  TexSwitch)
   map c-f5  (rx1 PreviewSwitch Front)
   map c-f6  (rx1 DoTeX \$fname)
   map c-f7  (rx  GoTeXError)
   map c-f8  (rx1 CopyTeXfiles \$fname)
   map c-f9  (rx1 PrintTeX \$fname)
   map c-f10 (rx1 RemoveTex Dummy)
\end{verbatim}

Die Aufrufe sind auf die Kombination {\em CTRL-Funktionstaste\/} gelegt. Die
Auswahl des Makropakets geschieht über einen Requester. Das Fenster von \AT\
wird abwechselnd nach vorne oder nach hinten gelegt. \PR\ kann nur nach vorne
geholt werden, was dann  sinnvoll ist, wenn man ihn im Modus {\em Custom
Screen\/} betreibt. Beim Aufruf von {\tt RemoveTeX} werden alle temporären
Dateien gelöscht.

\section{Hinweise zur Programmierung}
Ich möchte in diesem Abschnitt auf einige Stolperstellen hinweisen, auf die ich
beim Programmieren der ARexx Programme gestoßen bin. Dadurch sollten sich auch
einige Unklarheiten bereinigen lassen, die sich beim Durchlesen der Quelltexte
ergeben könnten.

Als erste Frage: Warum werden temporäre Dateien benutzt? Hier kommt eine
Eigenart der ARexx Implementierung im \DM\ zum Vorschein. Die von \DM\
gestarteten ARexx Programme erhalten als aktuelles Verzeichnis nicht das
aktuelle Verzeichnis des Fensters, von dem das Programm aufgerufen wurde,
sondern erben das aktuelle Verzeichnis, das beim Starten des Editors
eingestellt war.

Dies tritt besonders bei der Verwendung des Befehls {\tt ARPLOAD} auf, da
dieser Befehl automatisch das aktuelle Verzeichnis setzt, so daß bei
gleichzeitigem Arbeiten an mehereren Dateien aus verschiedenen Verzeichnissen
der Pfad für die zu erzeugenden Dateien nicht ermittelt werden kann. Deshalb
muss bei {\tt CopyTeXFiles} auch das Zielverzeichnis abgefragt werden.

Es scheint ein Fehler in der Funktion {\em GetFile()\/} aus der {\bf
rexxarplib.library} zu sein, der in bestimmten Situationen ein überzähliges '/'
dem Pfad hinzufügt. Deshalb wird in dem Program {\tt CopyTeXFiles} eine
Korrektur benötigt.

Der Druckertreiber benötigt ein Fenster, aus dem ihm das Abbruchsignal {\em
CTRL-C\/} gesendet werden kann. Er reagiert auf kein anderes Signal.

Um ein unnötiges Flackern der Titelzeile des Editors zu verhindern, sollte man
den Arexx Befehl {\tt CALL} zum Prozeduraufruf verwenden. \DM\ reagiert sonst
mit der Meldung {\em Unknown Command.}

Es ist nur ein gewisses Maß an Fehlerabfragen eingebaut. Es wird immer
überprüft, ob das anzusprechende Programm schon läuft. Bei der Übergabe von
Dateinamen wird getestet, ob er die Endung {\em .tex\/} besitzt. Bei
fehlerfreiem Ablauf ist der Rückgabewert 0, im Fehlerfall 10.

\section{Sonstiges}
Kommentare und Fehlerberichte bitte an:

\begin{quote}
\begin{tabbing}
5100 \=Aachen\kill
     \>Stefan Becker\\
     \>Holsteinstr. 9\\
5100 \=Aachen\\
\\
\>UseNet: stefanb@cip-s02.informatik.rwth-aachen.de
\end{tabbing}
\end{quote}

\end{document}
